#include <iostream>
#include <string>

using namespace std;

/*
主板
CPU
GPU
硬盘
*/

// 虚函数基类
class computer
{
public:
    virtual void mainboard()
    {
        cout << "我是主板" << endl;
    }

    virtual void CPU()
    {
        cout << "我是中央处理器" << endl;
    }
    virtual void GPU()
    {
        cout << "我是显卡" << endl;
    }
    virtual void disk()
    {
        cout << "我是硬盘" << endl;
    }
};


class high_end:public computer
{
public:
    virtual void mainboard()
    {
        cout << "ROG - 吹雪" << endl;
    }
    virtual void CPU()
    {
        cout << "I9 13900" << endl;
    }
    virtual void GPU()
    {
        cout << "rtx 4090" << endl;
    }

    virtual void disk()
    {
        cout << "三星 970NVE 2 4T" << endl;
    }
};

class low:public computer
{
public:
    virtual void mainboard()
    {
        cout << "七彩虹 - 迫击炮 - 二手99新" << endl;
    }
    virtual void CPU()
    {
        cout << "电竞性能 核心数对标 I9 <至强 >" << endl;
    }
    virtual void GPU()
    {
        cout << "电竞性能 能耗对标 4090 <51 单片机>" << endl;
    }

    virtual void disk()
    {
        cout << "高速 128kb <一不小心就存满了>" << endl;
    }
};

// 自由组装
void func(computer & mainboard , computer & CPU ,  computer & GPU , computer & disk , int n)
{
    cout << "主板(高端)" << endl;
    mainboard.mainboard();
    cout << "处理器(高端)" << endl;
    CPU.CPU();
    cout << "显卡(高端)" << endl;
    GPU.GPU();
    cout << "硬盘(高端)" << endl;
    disk.disk();

    cout << "由于客户长得帅 而且 有钱 , 送 电竞键鼠(机械手感)" << endl;
    cout << "送高端 电竞鼠标垫 以及 电竞包" << endl;

    cout << "售价为:" << n << endl;

}

int main(int argc, char const *argv[])
{
    high_end h;
    low l;

    func(h , h , l , l , 12000);
    
    return 0;
}